﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary; // Namespace til serialisering, binær data

namespace Frugtplantage
{
    [Serializable]
    class SortCollection
    {
        //Deklaration
        List<Sort> SorterListe;

        //Constructor
        public SortCollection()
        {
            SorterListe = new List<Sort>();
        }


        //------------
        // Set metoder
        //------------

        // Opret i listen
        public void SetMySort(int sortNummer, string sortNavn, string sortType)
        {
            Sort minSort = new Sort(sortNummer, sortNavn, sortType);
            SorterListe.Add(minSort);
        }

        // Opdater felt i liste
        public void updateMySort(int indexID, int updateSortNummer, string updateSortNavn, string updateSortType)
        {
            Sort minSort = new Sort(updateSortNummer, updateSortNavn, updateSortType);
            SorterListe[indexID] = minSort;
        }

        // Fjern fra listen
        public void FjernMySort(int indexID)
        {
            SorterListe.RemoveAt(indexID);
        }


        //------------
        // Get metoder
        //------------

        // Get metode (overdrager listen)
        public List<Sort> GetMySort()
        {
            return SorterListe;
        }


        //-------------------------
        // Gem og hent data fra fil
        //-------------------------

        // Gem data
        public void GemData()
        {
            try
            {
                // Skab fil for skrivning
                FileStream fileStream = new FileStream("sorter.bin", FileMode.Create, FileAccess.Write);

                // skab binary-formatter til objekt-serialisering
                BinaryFormatter binFormatter = new BinaryFormatter();

                // serialiser medlemssystem til filestream
                binFormatter.Serialize(fileStream, SorterListe);

                fileStream.Close();
            }
            catch (Exception Ex)
            {

                MessageBox.Show(Ex.ToString());
            }
            

        }

        // Hent data
        public void HentData()
        {
            FileStream filestream;
            try
            {
                filestream = new FileStream("sorter.bin", FileMode.Open, FileAccess.Read);
            }
            catch (Exception)
            {

                throw;
            }


            BinaryFormatter binFormatter = new BinaryFormatter();

            SorterListe = (List<Sort>)binFormatter.Deserialize(filestream);


            filestream.Close();
        }
    }
}
